char M[3][22][23],*p;
c[6];b[3];
r[9999];
main(n,m,i,j,x,y,w)
{
	memset(*M[0],'#',22);
	strcpy(*M[1],*M[0]);
	strcpy(*M[2],*M[0]);

	for(gets(&n);~scanf("%d%d\n",&n,&m);puts(*b&b[1]&b[2]?"YES":"NO"))
	{
		for(i=1;i<=n;i++)
		{
			*M[0][i]='#';
			gets(M[0][i]+1);
			strcpy(M[0][i]+strlen(M[0][i]),"#");
			p=strchr(M[0][i],'P');
			p?*p='0':0;
			strcpy(M[1][i],M[0][i]);
			strcpy(M[2][i],M[0][i]);
			j=strchr(M[0][i],'S');
			j?c[1]=i,*c=M[0][i],*c=j-*c:0;
			j=strchr(M[1][i],'B');
			j?c[3]=i,c[2]=M[1][i],c[2]=j-c[2]:0;
			j=strchr(M[2][i],'D');
			j?c[5]=i,c[4]=M[2][i],c[4]=j-c[4]:0;
		}
		memset(M[0][i],'#',22);
		strcpy(M[1][i],M[0][i]);
		strcpy(M[2][i],M[0][i]);

		for(i=0;i<3;i++)
		{
			*r=c[i*2];r[1]=c[i*2+1];
			for(w=b[i]=0;!b[i]&&~w;)
			{
				x=r[2*w];y=r[2*w--+1];
				
				b[i]=isdigit(M[i][y+1][x])|isdigit(M[i][y-1][x])|isdigit(M[i][y][x+1])|isdigit(M[i][y][x-1]);
				M[i][y][x]='#';
				if(M[i][y+1][x]-'#')r[++w*2]=x,r[w*2+1]=y+1,M[i][y+1][x]='#';
				if(M[i][y-1][x]-'#')r[++w*2]=x,r[w*2+1]=y-1,M[i][y-1][x]='#';
				if(M[i][y][x+1]-'#')r[++w*2]=x+1,r[w*2+1]=y,M[i][y][x+1]='#';
				if(M[i][y][x-1]-'#')r[++w*2]=x-1,r[w*2+1]=y,M[i][y][x-1]='#';
			}
		}
	}
}
